獲同意部分翻譯自 PSF 公告 New pip resolver to roll out this year。請參照全文獲得更詳盡資訊。
去年的 PSF 發文提到,pip 的開發團隊正在實作一個新的解析器(resolver)。該元件預計將於今年釋出。
新版解析器帶來的最重要改變將包括:
讓安裝結果更一致:這個版本將不再允許安裝有內部衝突的套件組合。在目前的版本裡,如果使用者在指令中指定的套件版本與另一套件的依賴衝突,pip 仍然會允許安裝。
舉例而言,pip install "six<1.12" "virtualenv==20.0.2"
目前會「成功」安裝 six==1.11
。但這是錯誤的行為,因為 virtualenv==20.0.2
其實指定了 six>=1.12.0,<2
(宣告在這裡)。新的解析器會直接拒絕這個套件組合,而不會安裝任何東西。
更加嚴格:如果你要求 pip 安裝的套件中,依賴的套件版本有衝突,將會直接被拒絕。當前版本在這個狀況下會安裝無法使用的組合。
這將會對 pip 的重要部分造成大規模變動,因此初步釋出的版本中十分可能會有 bug。我們希望能夠在所有人於生產環境中使用新版本之前,就確保能抓到這些問題。
(技術細節參見 GitHub 專案板。)
現在就可以參與使用者經驗研究。任何人都可以填寫問卷,或者與研究員進行視訊訪談。麻煩大家踴躍登錄,並盡可能把資訊散布給更多的人知道。
在你的 Python 環境裡執行 pip check
(不需要新版解析器,現有的正式版即可)。這個指令會報告環境內有沒有衝突的套件。如果你的環境沒有衝突,新版解析器造成問題的機會就會大大降低。如果環境內有你無法解決的套件衝突,歡迎在我們的 issue tracker 或討論區發問!這些實務經驗也對解析器的開發很有幫助。
預先規劃時間(預計五月前後)測試 pip 新版本。(詳見事件時程)
若遇到任何問題,歡迎填寫回報問卷。
讓更多人知道!!
如果你開發的工具呼叫 pip,或用它提供了任何功能,請務必在五月測試我們釋出的 beta 版本,確認新版解析器對你產生的影響。
新版解析器預計於 2020 下半年正式釋出。我們會提早釋出 alpha 與 beta 版本,並讓大家在 GitHub 或以 email 回報。任何回饋都歡迎!
歡迎登陸 pypi-announce mailing list 獲得更多及時版本資訊與回報管道。